package Util

import (
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

// 判断给定的文件路径是否存在
func IsExist(path string) bool {
	_, err := os.Stat(path)
	if err == nil {
		return true
	}
	if os.IsNotExist(err) {
		return false
	}
	return false
}

// 判断图片类型
func IsImageClass(filename string) string {
	var class string
	str := strings.Split(filename, ".")
	datatype := str[1]
	// 根据文件类型执行响应的操作
	switch datatype {
	case `jpeg`:
		class = ".jpeg"
	case `jpg`:
		class = ".jpg"
	case `png`:
		class = ".png"
	case `gif`:
		class = ".gif"
	default:
		class = "格式错误"
	}

	return class
}

// 判断给定的路径是否是文件夹
func IsDir(path string) bool {
	if stat, err := os.Stat(path); err == nil {
		return stat.IsDir()
	}
	return false
}

// 给定的文件不存在则创建
func CreateFileIfNecessary(path string) bool {
	_, err := os.Stat(path)
	if err != nil && os.IsNotExist(err) {
		if file, err := os.Create(path); err == nil {
			file.Close()
		}
	}
	exist := IsExist(path)
	return exist
}

// 给定的目录不存在则创建
func MkdirIfNecessary(path string) error {
	_, err := os.Stat(path)
	if err != nil && os.IsNotExist(err) {
		if err := os.MkdirAll(path, os.ModePerm); err != nil {
			// os.Chmod(path, 0777)
			return err
		}
	}
	return nil
}

func MkUnixNanoFileName() string {
	now := time.Now()
	min := 1000
	max := 9999
	return strconv.FormatInt(now.UnixNano(), 10) + Uint64ToStr(uint64(rand.Intn(max-min)+min))
}
